ECS のヘルスチェックの猶予期間内でも UnHealthyHostCount が記録される理由を教えてください
困っていた内容
障害検知のため ELB の UnHealthyHostCount メトリクスを監視するアラームを設定していますが、ECS のデプロイタイミングでアラーム状態になりました。
「ヘルスチェックの猶予期間」を設定しているので、デプロイタイミングのヘルスチェック失敗は記録されない認識でしたが、なぜアラーム状態になったのでしょうか。
アラーム状態になる理由と、デプロイタイミングでアラームを抑止する方法を教えてください。
どう対応すればいいの?
デプロイ期間中は CloudWatch アラームの無効化をご検討ください。
ヘルスチェックの猶予期間(healthCheckGracePeriodSeconds
)は、ECS サービスがヘルスチェック結果を無視する期間となります。そのため、ヘルスチェックの猶予期間中も、ヘルスチェックは実施され、ヘルスチェック結果に応じて UnHealthyHostCount などの CloudWatch メトリクスも記録されます。
healthCheckGracePeriodSeconds
…(中略)…
この間は、ECS サービススケジューラはヘルスチェックのステータスを無視します。
デプロイタイミングにヘルスチェック失敗が想定され、デプロイ中の CloudWatch アラームのアクションを抑止したい場合は、アクションの無効化をご検討ください。
CloudWatch アラームは一時的なアクションの無効化をサポートしており、無効化された状態ではアラーム状態になってもアクションは実施されません。そのため、デプロイ前に、CloudWatch アラームを無効化し、デプロイ完了後に、再度 CloudWatch アラームを有効化することで、アラーム状態への遷移によるアクションを抑止できます。
CloudWatch Alarm を有効化/無効化する方法 | DevelopersIO
なお、デプロイタイミングが決まっているなど、特定の期間だけアラームを抑止したい場合は、Metric Math 関数を利用した方法もご検討ください。
CloudWatch アラームのダウンタイム(特定期間の発報抑止)を Metric Math を使用して実現してみた | DevelopersIO
参考資料
アラームを無効または有効にするには、DisableAlarmActions および EnableAlarmActions API アクション、または AWS CLI の disable-alarm-actions および enable-alarm-actions コマンドを使用します。